﻿using Anata_Client;
using System;
using System.Collections;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using WindowsFormsApplication2.Model;

namespace WindowsFormsApplication2
{
    public partial class Form2 : Form
    {
        ArrayList transaksiLayanan = new ArrayList();
        /*
         * Layanan akan berisi array of object berikut
         * Id Transaksi untuk menyimpan id di database
         * Id TransaksiLayanan sesuai dgn yg di database
         * Id untuk membedakan setiap konsumen
         * Nama untuk tampilan
         * Pelayan
         * Layanan
         * Harga
         */
        ArrayList transaksiProduk = new ArrayList();
        /*
         * Produk akan berisi array of object berikut
         * Id Transaksi untuk menyimpan id di database
         * Id TransaksiProduk sesuai dgn yg di database
         * Id untuk membedakan setiap konsumen
         * Nama untuk tampilan
         * Nama Produk
         * Jumlah
         * Harga
         */
        DataGridView dgvTransaksi;
        int Id = 0;
        int idTransaksi;
        int jumlahHarga = 0;

        public Form2(DataGridView dgvHome)
        {
            InitializeComponent();

            dgvTransaksi = dgvHome;
            Id = Form1.currentId;
            object[] o;
            dgvLayanan.Columns.Add("Id", "Id");
            dgvLayanan.Columns.Add("Nama", "Nama");
            dgvLayanan.Columns.Add("Layanan", "Layanan");
            dgvLayanan.Columns.Add("Karyawan", "Karyawan");
            for (int i = 0; i < transaksiLayanan.Count; ++i)
            {
                o = (object[])transaksiLayanan[i];
                dgvLayanan.Rows.Add(o);
            }
        }

        public Form2(ref ArrayList a, ref ArrayList b, int _Id, DataGridView dgvHome)
        {
            InitializeComponent();

            transaksiLayanan = a;
            transaksiProduk = b;
            Id = _Id;
            dgvTransaksi = dgvHome;
            object[] o;
            dgvLayanan.Columns.Add("Id Transaksi", "Id Transaksi");
            dgvLayanan.Columns.Add("Id TransaksiLayanan", "Id TransaksiLayanan");
            dgvLayanan.Columns.Add("Id Konsumen", "Id Konsumen");
            dgvLayanan.Columns.Add("Nama", "Nama");
            dgvLayanan.Columns.Add("Karyawan", "Karyawan");
            dgvLayanan.Columns.Add("Layanan", "Layanan");
            dgvLayanan.Columns.Add("Harga", "Harga");
            for (int i = 0; i < transaksiLayanan.Count; ++i)
            {
                o = (object[])transaksiLayanan[i];
                if((int)o[2] == Id)
                    dgvLayanan.Rows.Add(o);
            }
            dgvProduk.Columns.Add("Id Transaksi", "Id Transaksi");
            dgvProduk.Columns.Add("Id TransaksiProduk", "Id TransaksiProduk");
            dgvProduk.Columns.Add("Id Konsumen", "Id Konsumen");
            dgvProduk.Columns.Add("Nama", "Nama");
            dgvProduk.Columns.Add("Produk", "Produk");
            dgvProduk.Columns.Add("Jumlah", "Jumlah");
            dgvProduk.Columns.Add("Harga", "Harga");
            for (int i = 0; i < transaksiProduk.Count; ++i)
            {
                o = (object[])transaksiProduk[i];
                if ((int)o[2] == Id)
                    dgvProduk.Rows.Add(o);
            }

            Transaksi t = new Transaksi();
            t.AddTransaksi(DateTime.Today.Year.ToString() + "-" + DateTime.Today.Month.ToString() + "-" + DateTime.Today.Day.ToString(), Id);
            idTransaksi = t.ID_Transaksi;
        }

        public Form2(ref ArrayList a, ref ArrayList b, int _Id, string _Name, DataGridView dgvHome)
        {
            InitializeComponent();

            transaksiLayanan = a;
            transaksiProduk = b;
            Id = _Id;
            txtCari.Text = _Name;
            dgvTransaksi = dgvHome;
            object[] o;
            dgvLayanan.Columns.Add("Id Transaksi", "Id Transaksi");
            dgvLayanan.Columns.Add("Id TransaksiLayanan", "Id TransaksiLayanan");
            dgvLayanan.Columns.Add("Id Konsumen", "Id Konsumen");
            dgvLayanan.Columns.Add("Nama", "Nama");
            dgvLayanan.Columns.Add("Karyawan", "Karyawan");
            dgvLayanan.Columns.Add("Layanan", "Layanan");
            dgvLayanan.Columns.Add("Harga", "Harga");
            for (int i = 0; i < transaksiLayanan.Count; ++i)
            {
                o = (object[])transaksiLayanan[i];
                if ((int)o[2] == Id)
                    dgvLayanan.Rows.Add(o);
            }
            dgvProduk.Columns.Add("Id Transaksi", "Id Transaksi");
            dgvProduk.Columns.Add("Id TransaksiProduk", "Id TransaksiProduk");
            dgvProduk.Columns.Add("Id Konsumen", "Id Konsumen");
            dgvProduk.Columns.Add("Nama", "Nama");
            dgvProduk.Columns.Add("Produk", "Produk");
            dgvProduk.Columns.Add("Jumlah", "Jumlah");
            dgvProduk.Columns.Add("Harga", "Harga");
            for (int i = 0; i < transaksiProduk.Count; ++i)
            {
                o = (object[])transaksiProduk[i];
                if ((int)o[2] == Id)
                    dgvProduk.Rows.Add(o);
            }

            DataGridViewRow dr;
            for (int i = 0; i < dgvLayanan.Rows.Count; ++i)
            {
                dr = dgvLayanan.Rows[i];
                jumlahHarga += (int)dr.Cells[6].Value;
            }
            for (int i = 0; i < dgvProduk.Rows.Count; ++i)
            {
                dr = dgvProduk.Rows[i];
                jumlahHarga += (int)dr.Cells[6].Value;
            }

            lblHarga.Text = "Rp. " + jumlahHarga.ToString();
            Transaksi t = new Transaksi();
            t.AddTransaksi(DateTime.Today.Year.ToString() + "-" + DateTime.Today.Month.ToString() + "-" + DateTime.Today.Day.ToString(), Id);
            idTransaksi = t.ID_Transaksi;
        }

        public Form2(ref ArrayList a, ref ArrayList b, int _idTransaksi, int _Id, string _Name, DataGridView dgvHome)
        {
            InitializeComponent();

            transaksiLayanan = a;
            transaksiProduk = b;
            idTransaksi = _idTransaksi;
            Id = _Id;
            txtCari.Text = _Name;
            dgvTransaksi = dgvHome;
            object[] o;
            dgvLayanan.Columns.Add("Id Transaksi", "Id Transaksi");
            dgvLayanan.Columns.Add("Id TransaksiLayanan", "Id TransaksiLayanan");
            dgvLayanan.Columns.Add("Id Konsumen", "Id Konsumen");
            dgvLayanan.Columns.Add("Nama", "Nama");
            dgvLayanan.Columns.Add("Karyawan", "Karyawan");
            dgvLayanan.Columns.Add("Layanan", "Layanan");
            dgvLayanan.Columns.Add("Harga", "Harga");
            for (int i = 0; i < transaksiLayanan.Count; ++i)
            {
                o = (object[])transaksiLayanan[i];
                if ((int)o[2] == Id)
                    dgvLayanan.Rows.Add(o);
            }
            dgvProduk.Columns.Add("Id Transaksi", "Id Transaksi");
            dgvProduk.Columns.Add("Id TransaksiProduk", "Id TransaksiProduk");
            dgvProduk.Columns.Add("Id Konsumen", "Id Konsumen");
            dgvProduk.Columns.Add("Nama", "Nama");
            dgvProduk.Columns.Add("Produk", "Produk");
            dgvProduk.Columns.Add("Jumlah", "Jumlah");
            dgvProduk.Columns.Add("Harga", "Harga");
            for (int i = 0; i < transaksiProduk.Count; ++i)
            {
                o = (object[])transaksiProduk[i];
                if ((int)o[2] == Id)
                    dgvProduk.Rows.Add(o);
            }

            DataGridViewRow dr;
            for (int i = 0; i < dgvLayanan.Rows.Count; ++i)
            {
                dr = dgvLayanan.Rows[i];
                jumlahHarga += (int)dr.Cells[6].Value;
            }
            for (int i = 0; i < dgvProduk.Rows.Count; ++i)
            {
                dr = dgvProduk.Rows[i];
                jumlahHarga += (int)dr.Cells[6].Value;
            }

            lblHarga.Text = "Rp. " + jumlahHarga.ToString();
            Transaksi t = new Transaksi();
            t.UpdateTransaksi(idTransaksi, jumlahHarga);
        }

        public Form2(string _consumer)
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            if (txtCari.Text != "")
            {
                Form3 f = new Form3(ref transaksiLayanan, ref transaksiProduk, idTransaksi, Id, txtCari.Text, dgvTransaksi);
                f.Show();
                this.Close();
            }
            else
            {
                MessageBox.Show("Anda belum mengisi nama pelanggan");
            }
        }

        public void addWork(string _Layanan, string _Pelayan)
        {
        }

        private void btnKembali_Click(object sender, EventArgs e)
        {
            if (!isTransaksiExist(idTransaksi))
            {
                if (dgvLayanan.Rows.Count > 0 || dgvProduk.Rows.Count > 0)
                {
                    object[] o = new object[3];
                    o[0] = idTransaksi;
                    o[1] = Id;
                    o[2] = txtCari.Text;
                    dgvTransaksi.Rows.Add(o);
                }
                else
                {
                    //Drop Transaksi
                    Transaksi t = new Transaksi();
                    t.DeleteTransaksi(idTransaksi);
                }
            }
            this.Close();
        }

        private void button2_Click(object sender, EventArgs e)
        {
            frmProduk f = new frmProduk(ref transaksiLayanan, ref transaksiProduk, idTransaksi, Id, txtCari.Text, dgvTransaksi);
            f.Show();
            this.Close();
        }

        private bool isTransaksiExist(int idT)
        {
            DataGridViewRow dr;
            for (int i = 0; i < dgvTransaksi.Rows.Count; ++i)
            {
                dr = dgvTransaksi.Rows[i];
                if ((int)dr.Cells[0].Value == idT)
                    return true;
            }

            return false;
        }

        private void deleteTransaksi(ArrayList a, int _idTransaksiLP)
        {
            object[] o;

            for (int i = 0; i < a.Count; ++i)
            {
                o = (object[])a[i];
                if ((int)o[1] == _idTransaksiLP)
                    a.RemoveAt(i);
            }
        }

        private void btnHapus_Click(object sender, EventArgs e)
        {
            DataGridViewRow dr = dgvLayanan.CurrentRow;
            DataGridViewCellCollection dcc = dr.Cells;

            TransaksiLayanan t = new TransaksiLayanan();
            t.DeleteTransaksiLayanan((int)dcc[1].Value);
            deleteTransaksi(transaksiLayanan, (int)dcc[1].Value);
            dgvLayanan.Rows.Remove(dr);
        }

        private void btnEditLayanan_Click(object sender, EventArgs e)
        {
            DataGridViewRow dr = dgvLayanan.CurrentRow;

            Form3 f = new Form3(ref transaksiLayanan, ref transaksiProduk, idTransaksi, (int)dr.Cells[1].Value, Id, txtCari.Text, dgvTransaksi);
            f.Show();
            this.Close();
        }

        private void btnHapusProduk_Click(object sender, EventArgs e)
        {

        }

        private void btnEditProduk_Click(object sender, EventArgs e)
        {

        }

        private void btnTambahKonsumen_Click(object sender, EventArgs e)
        {
            frmKonsumen f = new frmKonsumen(ref transaksiLayanan, ref transaksiProduk, idTransaksi, dgvTransaksi);
            f.Show();
            Transaksi t = new Transaksi();
            t.DeleteTransaksi(idTransaksi);
            this.Close();
        }
    }
}
